浅谈GNU/Linux的学习
===================

有人向我询问过关于如何GNU/Linux的问题。很遗憾的是，在使用多年GNU/Linux之后，我也不记得自己是怎么入门的，只好凭着自己的一点经验，谈谈学习GNU/Linux的方法。

我最早接触GNU/Linux，是在初中的时候。我在一些电脑和黑客的杂志上看到了这个操作系统，那时候RedFlag还是中文杂志中常见的发行版，Mandriva和Linspire还在，Ubuntu还不太流行。当时也就是学了ls等少数几个命令，在红旗下玩点小游戏，用Kaffeine放点东西。有的同学在教室的电脑上装了openSUSE并尝试了桌面特效。之后我到上大学之前都没再用过GNU/Linux.

之后到了2011年，我刚刚进入大学，教我们程序设计的老师在课堂上常常用PuTTY连接GNU/Linux的机器，并且还教过我们用man查C库函数的使用，于是我重新对GNU/Linux有了兴趣。我用过Ubuntu，用过Freespire和MEPIS，感觉都不好用，最后用了Fedora 16.当时我向老师请教过一些问题，老师都给了我答案，比如Vim用C-p做补全和C-y复制上一行，用SSH而不是Telnet是因为Telnet是明文连接，我学到了不少东西。

开始的时候，我用图形界面的软件管理器装软件，也因为MPlayer和ffmpeg之类的软件不在软件源而折腾过RPM Fusion，慢慢地我就了解了包管理，学会了用yum安装和升级软件，学会了用软件源。过了一段时间，在王垠的《完全用Linux工作》的影响之下，我终于下定了决心，把Windows彻底删掉，计算机上只安装Fedora.这是我最早真正使用GNU/Linux的经历。

过了一个学期，在看到了BBS的Linux版之后，我加入了Linux俱乐部。在这个社团里，我认识了两个人。一个是Gentoo用户，擅长shell和LaTeX，维护着LaTeX论文模板。一个是Debian社区的成员，是Debian Maintainer，擅长Perl语言。这两位是社团的负责人，在我见过他们开始，到一年半后他们毕业，他们一直在主持社团的活动。有这么优秀的社团负责人，同时当时BBS也活跃，Linux版也是比较有影响力的版面，因此时常有其他GNU/Linux高手来参与活动。在身边的人的影响和指导下，我的技术水平也有快速的提高。

在这个学期里，我接触了Arch Linux，一个受极简主义影响的社区发行版。由于此前用的是Fedora，我已经习惯了在系统上用最新的软件，因此用了一段时间的Arch之后，感觉和我非常合拍。而且，因为Arch是社区发行版，进入软件源的包不担心太多的专利问题，因此我常用的媒体播放器MPlayer、ffmpeg这些在Arch就能直接安装。Arch还有优秀的ArchWiki，通过阅读这些文档，我学到了很多知识，并且在执行每一个操作时，都明白了自己在做什么。恰好这个学期有一次活动，讲解Linux包管理，一位师兄讲Arch包管理，我更加熟悉了Arch包管理的用法。

大学入学的时候还不太了解GNU/Linux，一年之后，我终于能熟练地使用这个系统。我觉得以下几点对我的技术提高有很大的影响：

* 身边有人指导：无论是老师还是社区的同学，都帮我在入门阶段解决了很多问题。
* 经常查阅文档：man和ArchWiki都是非常优秀的资料。
* 让自己习惯GNU/Linux：我当时把Windows删掉，强迫自己使用GNU/Linux，开始并不习惯，但慢慢就发现使用起来问题越来越少，技术也逐渐提高。
* 在使用中收集使用技巧：当时还很活跃的BBS有很多有价值的讨论，在里面可以学到很多知识，线下活动更能从身边人使用GNU/Linux的方式了解很多实用的软件和技巧。此外我从网上很多零碎的资料中也接触了一些有意思的软件，比如字符界面的音乐播放器，开始我用cmus，后来用了mocp，直到现在。

因此，根据我的自身经历，我对GNU/Linux初学者的一些建议是：

* 多用GNU/Linux，让自己爱上这个系统。
* 查阅文档：man作为离线的纯文本的文档型资料，内容比较简洁。ArchWiki则是教程型的资料，有时会突出一些细节，虽然是为Arch这个发行版写的，但因为它常常能讲清原理，其实它里面的很多内容都可以在其他发行版上用。**最重要的是，通过学习，知道自己的每一个操作都在做什么。** 此外，搜索引擎是一个重要的信息获取工具，虽然国内不太容易上Google，但替代品是很容易找到的，比如 `基于searx的搜索代理 <https://search.wehack.space>`__，比如 `Qwant <https://www.qwant.com/>`__.
* 参与社区：不仅仅是线下社区，还有你关心或感兴趣的项目的社区。建议学习使用 *邮件列表* 和 *IRC*，它们虽然都很古老，但还是大多数社区的首要交流方式。远离QQ、微信、Skype等私有服务，它们不仅有严重的隐私风险，而且它们没有GNU/Linux客户端，不利于社区的交流。
* 阅读一些社区公认的好文章：它们说的不一定全都正确，但是很有学习的意义。比如ESR的《提问的智慧》告诉你在遇到问题时，怎样自己解决问题，怎样向社区求助。想了解社区文化的，可以看RMS的 `自由软件，自由社会 <https://fsfs-zh.readthedocs.io>`__ 还有ESR的 `《大教堂与集市》 <http://www.catb.org/esr/writings/cathedral-bazaar/>`__ ，可以了解“自由”和“开源”这两个观念之间的碰撞，还有给黑客文化的不同理解。
